﻿/**
 * \file VueVille.cs
 * \author Nicolas VAILLIET
 * \author Aurelien MADIOT
 * \date 2 janvier 2013
 * \version 1.0
 * \brief Affichage console des tours de jeu des villes
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ImplementationJeu;

namespace VueConsole
{
    /**
 * \class VueVille
 * \brief Affichage console des tours de jeu des villes
 */
    class VueVille
    {
        /**
         * \enum UniteType
         * \brief les types d'unités acceptées par les méthodes de la ville.
         * */
        private enum UniteType
        {
        ETUDIANT = 1, /*! Représente un ETUDIANT (=1) */
        ENSEIGNANT, /*! Représente un ENSEIGNANT (=1) */
        DIRECTEUR /*! Représente un DIRECTEUR (=1) */
        };

        /**
         * \fn public static void menuVille(Ville vi)
         * \param vi la ville qui effectuera l'action
         * \brief Affiche la menu d'actions d'une ville
         * */
        public static void menuVille(Ville vi)
        {
            Console.WriteLine();
            printVilleProperties(vi);
            Console.Write("Produire dans cette ville : Etudiant (e)" +
                        ", Enseignant (p), Directeur (d), Rien (r), Passer (b) : ");
            int c = Console.Read();
            while (c != 'e' && c != 'p' && c != 'd' && c != 'r' && c != 'b')
                c = Console.Read();
            if (c == 'e')
                vi.commanderUnite((int)UniteType.ETUDIANT);
            else if (c == 'p')
                vi.commanderUnite((int)UniteType.ENSEIGNANT);
            else if (c == 'd')
                vi.commanderUnite((int)UniteType.DIRECTEUR);
            else if (c == 'r')
                vi.commanderUnite(0);
        }

        /**
         * \fn public static void printVilleProperties(Ville vi)
         * \param vi la ville dont on veut afficher les infos
         * \brief Imprime les informations d'une ville
         */
        public static void printVilleProperties(Ville vi)
        {
            Console.Clear();
            Console.Write("-----------------------------\n");
            Console.Write("Résumé de la ville en " + vi.caseSousLaVille.coordo.abscisse + ":" + vi.caseSousLaVille.coordo.ordonnee + "\n");

            Console.Write("Population : " + vi.population + "\n");
            Console.Write("Superficie : " + vi.casesOccupees.Count + " cases\n");
            Console.Write("Nourriture : " + vi.ressources["nourriture"] + "\n");
            Console.Write("Minerai : " + vi.ressources["minerai"] + "\n");
            Console.Write("Nourriture nécéssaire pour nouvel habitant : " + vi.nourritureHab + "\n");
            Console.Write("Unité en garnison : " + vi.caseSousLaVille.unites.Count + "\n");
            Console.Write("Unité en production : " + vi.uniteEnCommande + "\n");
            Console.Write("Production dans " + (vi.dureeAttenteProduction) + " tours\n");
            Console.Write("-----------------------------\n");

            Console.WriteLine();
            Console.WriteLine();
        }
    }
}
